package com.conote.leecode.lv1;

/*
    1154. 一年中的第几天
    给你一个字符串 date ，按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。
 */
public class Solution1154 {
    public static void main(String[] args) {
        System.out.println(new Solution1154().dayOfYear("2019-11-09"));
    }

    // &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& hugo &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

    public int dayOfYear(String date) {
        int days = 0;
        if (date.length() == 10) {
            // 判断闰年
            String[] arr = date.split("-");
            int year = Integer.parseInt(arr[0]);
            int currentMonth = Integer.parseInt(arr[1]);
            for (int i = 1; i < currentMonth; i++) {
                if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                    days += days(String.format("%02d", i), 1);
                } else {
                    days += days(String.format("%02d", i), 0);
                }
            }
            days += Integer.parseInt(arr[2]);
        }
        return days;
    }

    private int days(String month, int flag) {
        return flag == 1 ? switch (month) {
            case "01", "03", "05", "07", "08", "10", "12" -> 31;
            case "04", "06", "09", "11" -> 30;
            case "02" -> 29;
            default -> 0;
        } : switch (month) {
            case "01", "03", "05", "07", "08", "10", "12" -> 31;
            case "04", "06", "09", "11" -> 30;
            case "02" -> 28;
            default -> 0;
        };
    }

    // &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& kofi &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

}